package com.banyou.banyou.util;

import android.app.Activity;
import android.content.Intent;
import android.util.Log;


import java.util.Enumeration;
import java.util.NoSuchElementException;
import java.util.Stack;

/**
 * ----------Dragon be here!----------/
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃代码无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━
 * 项目名称：WheelMedical
 * 包名:com.yyxk.wheelmedical.util
 * 类描述：Acitivity管理类
 * 创建人：Random
 * 创建时间：12:20
 * 修改人：Random
 * 修改时间：12:20
 * 修改备注：
 */
public class MyActivityManager {
    private static MyActivityManager instance;
    private Stack<Activity> activityStack;//activity栈

    private MyActivityManager() {

    }

    //单例模式
    public static MyActivityManager getInstance() {
        if (instance == null) {
            instance = new MyActivityManager();
        }
        return instance;
    }

    //把一个activity压入栈中
    public void pushOneActivity(Activity actvity) {
        if (activityStack == null) {
            activityStack = new Stack<Activity>();
        }
        activityStack.add(actvity);
        Log.i("tagggggg ", "ActivityStack.size() = " + activityStack.size());
    }

    //获取栈顶的activity，先进后出原则
    public Activity getLastActivity() {
        Activity activity = null;
        if (activityStack == null) return null;
        try {
            activity = activityStack.lastElement();
        } catch (NoSuchElementException e) {
            return null;
        }
        return activity;
    }

    public void removeOnActivityFromStack(Activity activity) {
        if (activity != null) {
            activityStack.remove(activity);
            activity = null;
        }
    }

    //移除一个activity
    public void popOneActivity(Activity activity) {
        if (activityStack != null && activityStack.size() > 0) {
            if (activity != null) {
                activity.finish();
                activityStack.remove(activity);
                activity = null;
            }
        }
    }

    //移除多个activity
    public void popNumActivity(int num) {
        if (activityStack != null && activityStack.size() > num) {
            while (num > 0) {
                Activity activity = getLastActivity();
                if (activity == null) break;
                popOneActivity(activity);
//                Enumeration<Activity> elements = activityStack.elements();
//                elements.ne
                num--;
            }
        }
    }

    //退出所有activity
    public void finishAllActivity() {
        if (activityStack != null) {
            while (activityStack.size() > 0) {
                Activity activity = getLastActivity();
                if (activity == null) break;
                popOneActivity(activity);
            }
        }
    }
}
